import { BaseQuery } from "@/types/common/response";

/**
 * 考勤规则状态枚举
 */
export enum RuleStatus {
  /** 正常 */
  NORMAL = "0",
  /** 停用 */
  DISABLED = "1"
}

/**
 * 考勤规则查询参数
 */
export interface RuleQuery extends BaseQuery {
  /** 规则名称 */
  ruleName?: string;
  /** 规则状态 */
  status?: string;
}

/**
 * 考勤规则视图对象
 */
export interface RuleVO {
  /** 规则ID */
  ruleId?: string;
  /** 规则名称 */
  ruleName: string;
  /** 规则描述 */
  description?: string;
  /** 工作日 (如：1,2,3,4,5 表示周一至周五) */
  workDays: string;
  /** 上班时间 */
  workStartTime: string;
  /** 下班时间 */
  workEndTime: string;
  /** 午休开始时间 */
  restStartTime?: string;
  /** 午休结束时间 */
  restEndTime?: string;
  /** 最早签到时间 */
  earliestCheckInTime?: string;
  /** 最晚签到时间 */
  latestCheckInTime?: string;
  /** 最早签退时间 */
  earliestCheckOutTime?: string;
  /** 最晚签退时间 */
  latestCheckOutTime?: string;
  /** 是否允许加班 */
  allowOvertime?: string;
  /** 加班需审批 */
  overtimeNeedsApproval?: string;
  /** 是否允许请假 */
  allowLeave?: string;
  /** 请假需审批 */
  leaveNeedsApproval?: string;
  /** 规则状态 */
  status: RuleStatus;
  /** 创建时间 */
  createTime?: string;
  /** 更新时间 */
  updateTime?: string;
  /** 备注 */
  remark?: string;
}

/**
 * 考勤规则表单对象
 */
export interface RuleForm {
  /** 规则名称 */
  ruleName: string;
  /** 规则描述 */
  description?: string;
  /** 工作日 */
  workDays: string;
  /** 上班时间 */
  workStartTime: string;
  /** 下班时间 */
  workEndTime: string;
  /** 午休开始时间 */
  restStartTime?: string;
  /** 午休结束时间 */
  restEndTime?: string;
  /** 最早签到时间 */
  earliestCheckInTime?: string;
  /** 最晚签到时间 */
  latestCheckInTime?: string;
  /** 最早签退时间 */
  earliestCheckOutTime?: string;
  /** 最晚签退时间 */
  latestCheckOutTime?: string;
  /** 是否允许加班 */
  allowOvertime?: string;
  /** 加班需审批 */
  overtimeNeedsApproval?: string;
  /** 是否允许请假 */
  allowLeave?: string;
  /** 请假需审批 */
  leaveNeedsApproval?: string;
  /** 规则状态 */
  status: RuleStatus;
  /** 备注 */
  remark?: string;
}

/**
 * 考勤规则请求对象
 */
export interface RuleRequest extends RuleForm {
  /** 规则ID */
  ruleId?: string;
} 